import torch
import torch.nn as nn

"""
分类示例1：是一个简单的线性结构
左图：输入n个特征 x1 x2 ... xn 预测一个值y
右图：输入n个特征 x1 x2 ... xn 预测两个值 y1 y2
"""


class LinearRegression(nn.Module):
    def __init__(self, input_size=10):
        super().__init__()
        # input_size 输入特征维度
        # 1  输出特征维度
        self.linear = nn.Linear(input_size, 1)

    def forward(self, x):
        return self.linear(x)


if __name__ == '__main__':
    model = LinearRegression()
    x = torch.rand(10)
    y = model(x)
    print(y)

    # 5组数据，每组数据有10个特征
    # 10个特征预测一个值
    x = torch.rand(5, 10)
    y = model(x)
    print(y)
    print(y.shape)

    x = torch.rand(3, 4, 10)
    y = model(x)
    print(y)
    print(y.shape)

    #--------------------------------------------------------------
    # 其实我们完全可以直接使用线性层
    net = nn.Linear(5, 2)
    x = torch.rand(10, 5)
    y = net(x)
    print(y)
    print(y.shape)
